
package hackathon.techbooster.tanabata;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;

public class VNameTextView extends VTextView {

    public VNameTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void onDraw(Canvas canvas) {
        float fontSpacing = mPaint.getFontSpacing();
        float x = width - fontSpacing;
        float y = height - BOTTOM_SPACE - text.length() * fontSpacing;
        String[] s = text.split("");

        // 高さのために一度ループする
        float length = 0;
        for (int i = 1; i <= text.length(); i++) {
            CharSetting setting = CharSetting.getSetting(s[i]);
            if (setting == null) {
                length++;
            } else {
                length += setting.space;
            }
        }
        y = height - BOTTOM_SPACE - length * fontSpacing;

        for (int i = 1; i <= text.length(); i++) {
            fontSpacing = mPaint.getFontSpacing();
            if (CharSetting.checkSpecialData(s, i)) {
                // 特別チェックに通った場合はそのまま描画
                canvas.drawText(s[i], x, y, mPaint);
            } else {
                CharSetting setting = CharSetting.getSetting(s[i]);

                if (setting == null) {
                    // 文字設定がない場合、そのまま描画
                    canvas.drawText(s[i], x, y, mPaint);
                } else {
                    fontSpacing = mPaint.getFontSpacing() * setting.space;
                    // 文字設定が見つかったので、設定に従い描画
                    canvas.save();
                    canvas.rotate(setting.angle, x, y);
                    canvas.drawText(s[i], x + fontSpacing * setting.x, y + fontSpacing * setting.y,
                            mPaint);
                    canvas.restore();
                }

                // 文字を送る
                y += fontSpacing;
            }
        }
    }
}
